A report is a combination of three kinds of information: 1) information about how to obtain data (queries) as well as the structure of the data, 2) layout or formatting information that describes how to present the data, and 3) additional informational properties, such as author, parameters, images within the report, and so on. In today's database reporting market, most applications use a proprietary format for representing the definition of a report. In addition, vendors that provide a report execution environment usually only support their own design tools. For customers, this means that customers cannot easily move reports between different reporting implementations and that there are few options for choosing new tools that work with existing execution environments.
Report Definition Language (RDL) is a standard proposed by Microsoft for defining reports. RDL is an XML schema used with Microsoft SQL Server Reporting Services. Report authors usually write RDL using Microsoft Visual Studio, although there are also third-party tools; authors may also create or edit RDL in a text editor such as Microsoft Notepad. Microsoft Reporting Services and 3rd party reporting frameworks use RDL to define charts, graphs, calculations, text, images, and other report objects and to render report objects in a variety of formats.
One goal of RDL is to promote the interoperability of commercial reporting products by defining a common schema that allows interchange of report definitions. RDL is a schema definition, not a programmatic interface or protocol like HTTP or ODBC. RDL does not specify how applications pass report definitions between applications or how applications process reports. In addition, RDL is fully encapsulated, meaning that successfully interpreting an RDL document does not involve any understanding of the source application. RDL is also designed to be output format neutral, meaning that reports defined using RDL can be output to a variety of formats including Web and print-ready formats or data-focused formats like XML. In the process of generating different output formats, products may represent RDL constructs slightly differently or ignore certain constructs completely. For example, a product generating a textual format may choose to ignore images in a report.
When reporting data, there are commonly cases where a report user wants to group and aggregate the data, such as to help the report user identify trends in the data. Often, reports include a predefined set of categories, or groups, into which a reporting application places data. For example, predefined layouts may include data for every month of a year. Sometimes however, straightforward grouping and aggregation is insufficient, particularly when dealing with changing or unknown data characteristics. Report users often have a different skill set than database designers, and cannot simply modify queries in a data source (e.g., a database) to define a different report. Having database designers modify queries is expensive. In addition, a report user may want to generate a report from a third party database for which the report user does not interact with the database owner and for which modifying the data source is not an option.